package com.gxc.array;

import java.util.*;

/**
 * 给定一个乱序的数组，删除所有的重复元素，使得每个元素只出现一次，并且按照出现的次数从高到低进行排序，相同出现次数按照第一次出现顺序进行先后排序。
 *
 * 输入描述
 * 一个数组
 *
 * 输出描述
 * 去重排序后的数组
 */
public class DeReorder {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] array = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        scanner.close();

        Map<Integer, Integer> countMap = new HashMap<>();
        Map<Integer, Integer> posionMap = new HashMap<>();
        for (int i = 0; i < array.length; i++) {
            countMap.put(array[i], countMap.getOrDefault(array[i], 0) + 1);
            posionMap.putIfAbsent(array[i], i);
        }

        List<Integer> res = new ArrayList<>(countMap.keySet());
        res.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer x, Integer y) {
                int i = countMap.get(y) - countMap.get(x);
                if (i == 0) i = posionMap.get(x) - posionMap.get(y);
                return i;
            }
        });

        for (int i = 0; i < res.size(); i++) {
            System.out.print(res.get(i));
            if (i != res.size() - 1) System.out.print(",");
        }
    }
}
